from mcp.server.fastmcp import FastMCP, Context
import subprocess
import json

mcp = FastMCP("Xfce4 Whiskermenu Plugin MCP Server")
"""
面向 xfce4-whiskermenu-plugin 软件的 MCP Server

提供的 MCP tools：
1. xfce4_popup_whiskermenu_default - 无参数调用 xfce4-popup-whiskermenu，显示默认菜单
   参数：无
   返回：统一JSON结构

2. xfce4_popup_whiskermenu_pointer - 使用--pointer参数调用，在鼠标位置显示菜单
   参数：无
   返回：统一JSON结构

3. xfce4_popup_whiskermenu_help - 使用--help参数调用，显示帮助信息
   参数：无
   返回：统一JSON结构

4. xfce4_popup_whiskermenu_version - 使用--version参数调用，显示版本信息
   参数：无
   返回：统一JSON结构

所有tool返回的统一JSON结构：
{
  "success": bool,      # 命令是否成功执行
  "command": str,       # 执行的完整命令
  "exit_code": int,     # 命令退出码
  "stdout": str,        # 标准输出内容
  "stderr": str         # 标准错误内容
}
"""

@mcp.tool()
def xfce4_popup_whiskermenu_default():
    """
    无参数调用 xfce4-popup-whiskermenu，显示默认菜单
    
    返回：
        JSON结构：包含命令执行结果的统一格式
    """
    command = "xfce4-popup-whiskermenu"
    result = subprocess.run(command, shell=True, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": command,
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def xfce4_popup_whiskermenu_pointer():
    """
    使用--pointer参数调用 xfce4-popup-whiskermenu，在鼠标位置显示菜单
    
    返回：
        JSON结构：包含命令执行结果的统一格式
    """
    command = "xfce4-popup-whiskermenu -p"
    result = subprocess.run(command, shell=True, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": command,
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def xfce4_popup_whiskermenu_help():
    """
    使用--help参数调用 xfce4-popup-whiskermenu，显示帮助信息
    
    返回：
        JSON结构：包含命令执行结果的统一格式
    """
    command = "xfce4-popup-whiskermenu -h"
    result = subprocess.run(command, shell=True, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": command,
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def xfce4_popup_whiskermenu_version():
    """
    使用--version参数调用 xfce4-popup-whiskermenu，显示版本信息
    
    返回：
        JSON结构：包含命令执行结果的统一格式
    """
    command = "xfce4-popup-whiskermenu -V"
    result = subprocess.run(command, shell=True, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": command,
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

if __name__ == "__main__":
    mcp.run()